package com.tangsm.spring.boot.word.to.file.utli;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.PictureWatermark;
import com.spire.doc.TextWatermark;
import com.spire.doc.documents.WatermarkLayout;

import java.awt.Color;

/**
 * 使用免费的Free Spire.Doc for Java组件为Word文档添加文本水印和图片水印
 * <p>导入依赖：</p>
 * <repositories>
 *     <repository>
 *         <id>com.e-iceblue</id>
 *         <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
 *     </repository>
 * </repositories>
 * <dependencies>
 *     <dependency>
 *         <groupId>e-iceblue</groupId>
 *         <artifactId>spire.doc.free</artifactId>
 *         <version>2.7.3</version>
 *     </dependency>
 * </dependencies>
 * @see <a href="https://www.cnblogs.com/jazz-z/p/13180670.html">https://www.cnblogs.com/jazz-z/p/13180670.html</a>
 * @author tangsm
 */
public class SpireDocUtils {

    /**
     * 添加文本水印
     * @param filePath 源文件路径
     * @param outFilePath 输出文件路径
     * @param watermarkText 水印文本
     */
    public static void addTextWatermark(String filePath, String outFilePath, String watermarkText){
        //加载Word文档
        Document doc = new Document();
        doc.loadFromFile(filePath);

        //创建TextWatermark实例
        TextWatermark textWatermark = new TextWatermark();

        //设置水印文本内容
        textWatermark.setText(watermarkText);

        //自定义文本水印的属性（字体、字号、字体颜色和排版格式）
        textWatermark.setFontName("宋体");
        textWatermark.setFontSize(60);
        textWatermark.setColor(Color.RED);
        textWatermark.setLayout(WatermarkLayout.Diagonal);

        //将文本水印添加到文档
        doc.setWatermark(textWatermark);

        //保存结果文件
        doc.saveToFile(outFilePath, "docx".equals(getSuffix(filePath)) ? FileFormat.Docx : FileFormat.Doc);
    }

    /**
     * 添加图片水印
     * @param filePath 源文件路径
     * @param outFilePath 输出文件路径
     * @param imgPath 水印图片路径
     */
    public static void addImageWatermark(String filePath, String outFilePath, String imgPath) {
        //加载Word文档
        Document document = new Document();
        document.loadFromFile(filePath);

        //创建PictureWatermark实例
        PictureWatermark picture = new PictureWatermark();

        //设置水印图片属性
        picture.setPicture(imgPath);
        picture.setScaling(30);
        picture.isWashout(false);

        //添加水印图片到文档
        document.setWatermark(picture);

        //保存结果文件
        document.saveToFile(outFilePath, "docx".equals(getSuffix(filePath)) ? FileFormat.Docx : FileFormat.Doc);
    }

    /**
     * 获取文件后缀，无后缀时返回空
     * @param fileName 文件路径
     * @return 后缀
     */
    public static String getSuffix(String fileName){
        int suffixIndex = fileName.lastIndexOf(".");
        if(suffixIndex == -1){
            return "";
        }else {
            return fileName.substring(suffixIndex+1);
        }
    }
}
